use super::crypt_types::{CRYPT_EAL_Func, CRYPT_EAL_ProvMgrCtx};
use crate::bsl::bsl_params::BSL_Param;
pub const CRYPT_EAL_CAP_GETENTROPY: u32 = 1;
pub const CRYPT_EAL_CAP_CLEANENTROPY: u32 = 2;
pub const CRYPT_EAL_CAP_GETNONCE: u32 = 3;
pub const CRYPT_EAL_CAP_CLEANNONCE: u32 = 4;
pub const CRYPT_EAL_CAP_MGRCTXCTRL: u32 = 5;
pub const CRYPT_EAL_PROVCB_FREE: u32 = 1;
pub const CRYPT_EAL_PROVCB_QUERY: u32 = 2;
pub const CRYPT_EAL_PROVCB_CTRL: u32 = 3;
pub const CRYPT_EAL_PROVCB_GETCAPS: u32 = 4;
pub const CRYPT_EAL_OPERAID_SYMMCIPHER: u32 = 1;
pub const CRYPT_EAL_OPERAID_KEYMGMT: u32 = 2;
pub const CRYPT_EAL_OPERAID_SIGN: u32 = 3;
pub const CRYPT_EAL_OPERAID_ASYMCIPHER: u32 = 4;
pub const CRYPT_EAL_OPERAID_KEYEXCH: u32 = 5;
pub const CRYPT_EAL_OPERAID_KEM: u32 = 6;
pub const CRYPT_EAL_OPERAID_HASH: u32 = 7;
pub const CRYPT_EAL_OPERAID_MAC: u32 = 8;
pub const CRYPT_EAL_OPERAID_KDF: u32 = 9;
pub const CRYPT_EAL_OPERAID_RAND: u32 = 10;
pub const CRYPT_EAL_OPERAID_DECODER: u32 = 11;
pub const CRYPT_EAL_OPERAID_SELFTEST: u32 = 12;
pub const CRYPT_EAL_GET_GROUP_CAP: u32 = 1;
pub const CRYPT_EAL_GET_SIGALG_CAP: u32 = 2;
pub const CRYPT_EAL_IMPLCIPHER_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLCIPHER_INITCTX: u32 = 2;
pub const CRYPT_EAL_IMPLCIPHER_UPDATE: u32 = 3;
pub const CRYPT_EAL_IMPLCIPHER_FINAL: u32 = 4;
pub const CRYPT_EAL_IMPLCIPHER_DEINITCTX: u32 = 5;
pub const CRYPT_EAL_IMPLCIPHER_CTRL: u32 = 6;
pub const CRYPT_EAL_IMPLCIPHER_FREECTX: u32 = 7;
pub const CRYPT_EAL_IMPLPKEYMGMT_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLPKEYMGMT_SETPARAM: u32 = 2;
pub const CRYPT_EAL_IMPLPKEYMGMT_GETPARAM: u32 = 3;
pub const CRYPT_EAL_IMPLPKEYMGMT_GENKEY: u32 = 4;
pub const CRYPT_EAL_IMPLPKEYMGMT_SETPRV: u32 = 5;
pub const CRYPT_EAL_IMPLPKEYMGMT_SETPUB: u32 = 6;
pub const CRYPT_EAL_IMPLPKEYMGMT_GETPRV: u32 = 7;
pub const CRYPT_EAL_IMPLPKEYMGMT_GETPUB: u32 = 8;
pub const CRYPT_EAL_IMPLPKEYMGMT_DUPCTX: u32 = 9;
pub const CRYPT_EAL_IMPLPKEYMGMT_CHECK: u32 = 10;
pub const CRYPT_EAL_IMPLPKEYMGMT_COMPARE: u32 = 11;
pub const CRYPT_EAL_IMPLPKEYMGMT_CTRL: u32 = 12;
pub const CRYPT_EAL_IMPLPKEYMGMT_FREECTX: u32 = 13;
pub const CRYPT_EAL_IMPLPKEYMGMT_IMPORT: u32 = 14;
pub const CRYPT_EAL_IMPLPKEYMGMT_EXPORT: u32 = 15;
pub const CRYPT_EAL_IMPLPKEYSIGN_SIGN: u32 = 1;
pub const CRYPT_EAL_IMPLPKEYSIGN_SIGNDATA: u32 = 2;
pub const CRYPT_EAL_IMPLPKEYSIGN_VERIFY: u32 = 3;
pub const CRYPT_EAL_IMPLPKEYSIGN_VERIFYDATA: u32 = 4;
pub const CRYPT_EAL_IMPLPKEYSIGN_RECOVER: u32 = 5;
pub const CRYPT_EAL_IMPLPKEYSIGN_BLIND: u32 = 6;
pub const CRYPT_EAL_IMPLPKEYSIGN_UNBLIND: u32 = 7;
pub const CRYPT_EAL_IMPLPKEYCIPHER_ENCRYPT: u32 = 1;
pub const CRYPT_EAL_IMPLPKEYCIPHER_DECRYPT: u32 = 2;
pub const CRYPT_EAL_IMPLPKEYCIPHER_HEADD: u32 = 3;
pub const CRYPT_EAL_IMPLPKEYCIPHER_HEMUL: u32 = 4;
pub const CRYPT_EAL_IMPLPKEYEXCH_EXCH: u32 = 1;
pub const CRYPT_EAL_IMPLPKEYKEM_ENCAPSULATE_INIT: u32 = 1;
pub const CRYPT_EAL_IMPLPKEYKEM_DECAPSULATE_INIT: u32 = 2;
pub const CRYPT_EAL_IMPLPKEYKEM_ENCAPSULATE: u32 = 3;
pub const CRYPT_EAL_IMPLPKEYKEM_DECAPSULATE: u32 = 4;
pub const CRYPT_EAL_IMPLMD_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLMD_INITCTX: u32 = 2;
pub const CRYPT_EAL_IMPLMD_UPDATE: u32 = 3;
pub const CRYPT_EAL_IMPLMD_FINAL: u32 = 4;
pub const CRYPT_EAL_IMPLMD_DEINITCTX: u32 = 5;
pub const CRYPT_EAL_IMPLMD_DUPCTX: u32 = 6;
pub const CRYPT_EAL_IMPLMD_CTRL: u32 = 7;
pub const CRYPT_EAL_IMPLMD_FREECTX: u32 = 8;
pub const CRYPT_EAL_IMPLMD_SQUEEZE: u32 = 9;
pub const CRYPT_EAL_IMPLMD_COPYCTX: u32 = 10;
pub const CRYPT_EAL_IMPLMD_GETPARAM: u32 = 11;
pub const CRYPT_EAL_IMPLMAC_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLMAC_INIT: u32 = 2;
pub const CRYPT_EAL_IMPLMAC_UPDATE: u32 = 3;
pub const CRYPT_EAL_IMPLMAC_FINAL: u32 = 4;
pub const CRYPT_EAL_IMPLMAC_DEINITCTX: u32 = 5;
pub const CRYPT_EAL_IMPLMAC_REINITCTX: u32 = 6;
pub const CRYPT_EAL_IMPLMAC_CTRL: u32 = 7;
pub const CRYPT_EAL_IMPLMAC_FREECTX: u32 = 8;
pub const CRYPT_EAL_IMPLMAC_SETPARAM: u32 = 9;
pub const CRYPT_EAL_IMPLKDF_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLKDF_SETPARAM: u32 = 2;
pub const CRYPT_EAL_IMPLKDF_DERIVE: u32 = 3;
pub const CRYPT_EAL_IMPLKDF_DEINITCTX: u32 = 4;
pub const CRYPT_EAL_IMPLKDF_CTRL: u32 = 5;
pub const CRYPT_EAL_IMPLKDF_FREECTX: u32 = 6;
pub const CRYPT_EAL_IMPLRAND_DRBGNEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLRAND_DRBGINST: u32 = 2;
pub const CRYPT_EAL_IMPLRAND_DRBGUNINST: u32 = 3;
pub const CRYPT_EAL_IMPLRAND_DRBGGEN: u32 = 4;
pub const CRYPT_EAL_IMPLRAND_DRBGRESEED: u32 = 5;
pub const CRYPT_EAL_IMPLRAND_DRBGCTRL: u32 = 6;
pub const CRYPT_EAL_IMPLRAND_DRBGFREECTX: u32 = 7;
pub const CRYPT_DECODER_IMPL_NEWCTX: u32 = 1;
pub const CRYPT_DECODER_IMPL_SETPARAM: u32 = 2;
pub const CRYPT_DECODER_IMPL_GETPARAM: u32 = 3;
pub const CRYPT_DECODER_IMPL_DECODE: u32 = 4;
pub const CRYPT_DECODER_IMPL_FREEOUTDATA: u32 = 5;
pub const CRYPT_DECODER_IMPL_FREECTX: u32 = 6;
pub const CRYPT_EAL_IMPLSELFTEST_NEWCTX: u32 = 1;
pub const CRYPT_EAL_IMPLSELFTEST_GETVERSION: u32 = 2;
pub const CRYPT_EAL_IMPLSELFTEST_SELFTEST: u32 = 3;
pub const CRYPT_EAL_IMPLSELFTEST_FREECTX: u32 = 4;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CRYPT_EAL_AlgInfo {
    pub algId: i32,
    pub implFunc: *const CRYPT_EAL_Func,
    pub attr: *const ::std::os::raw::c_char,
}
pub type CRYPT_EAL_CvtVoid = ::std::option::Option<unsafe extern "C" fn()>;
pub type CRYPT_EAL_ProvMgrCtrlCb = ::std::option::Option<
    unsafe extern "C" fn(
        mgrCtx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub const CRYPT_EAL_MGR_GETSEEDCTX: CRYPT_EAL_PROVMGRCTRL = 0;
pub const CRYPT_EAL_MGR_GETLIBCTX: CRYPT_EAL_PROVMGRCTRL = 1;
pub type CRYPT_EAL_PROVMGRCTRL = ::std::os::raw::c_uint;
pub type CRYPT_EAL_ProvFreeCb =
    ::std::option::Option<unsafe extern "C" fn(provCtx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ProvQueryCb = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        operaId: i32,
        algInfos: *mut *mut CRYPT_EAL_AlgInfo,
    ) -> i32,
>;
pub type CRYPT_EAL_ProvCtrlCb = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ProcessFuncCb = ::std::option::Option<
    unsafe extern "C" fn(params: *const BSL_Param, args: *mut ::std::os::raw::c_void) -> i32,
>;
pub type CRYPT_EAL_ProvGetCapsCb = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        cmd: i32,
        cb: CRYPT_EAL_ProcessFuncCb,
        args: *mut ::std::os::raw::c_void,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplProviderInit = ::std::option::Option<
    unsafe extern "C" fn(
        mgrCtx: *mut CRYPT_EAL_ProvMgrCtx,
        param: *mut BSL_Param,
        capFuncs: *mut CRYPT_EAL_Func,
        outFuncs: *mut *mut CRYPT_EAL_Func,
        provCtx: *mut *mut ::std::os::raw::c_void,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplCipherNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplCipherInitCtx = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        key: *const u8,
        keyLen: u32,
        iv: *const u8,
        ivLen: u32,
        param: *mut BSL_Param,
        enc: bool,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplCipherUpdate = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        in_: *const u8,
        inLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplCipherFinal = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, out: *mut u8, outLen: *mut u32) -> i32,
>;
pub type CRYPT_EAL_ImplCipherDeinitCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplCipherCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplCipherFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplPkeyMgmtNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplPkeyMgmtSetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtGetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtGenKey =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplPkeyMgmtSetPrv = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtSetPub = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtGetPrv = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtGetPub = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtDupCtx = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplPkeyMgmtCheck = ::std::option::Option<
    unsafe extern "C" fn(
        checkType: u32,
        ctx1: *const ::std::os::raw::c_void,
        ctx2: *const ::std::os::raw::c_void,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtCompare = ::std::option::Option<
    unsafe extern "C" fn(
        ctx1: *const ::std::os::raw::c_void,
        ctx2: *const ::std::os::raw::c_void,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplPkeyMgmtImport = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyMgmtExport = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeySign = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        mdAlgId: i32,
        data: *const u8,
        dataLen: u32,
        sign: *mut u8,
        signLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeySignData = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        data: *const u8,
        dataLen: u32,
        sign: *mut u8,
        signLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyVerify = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        mdAlgId: i32,
        data: *const u8,
        dataLen: u32,
        sign: *mut u8,
        signLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyVerifyData = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        data: *const u8,
        dataLen: u32,
        sign: *mut u8,
        signLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyRecover = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        sign: *mut u8,
        signLen: u32,
        data: *mut u8,
        dataLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyBlind = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        mdAlgId: i32,
        input: *const u8,
        inputLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyUnBlind = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        input: *const u8,
        inputLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyEncrypt = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        data: *const u8,
        dataLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyDecrypt = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        data: *const u8,
        dataLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyHEAdd = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        input: *const BSL_Param,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyHEMul = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        input: *const BSL_Param,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyExch = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        pubCtx: *const ::std::os::raw::c_void,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyEncapsInit = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void, params: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyDecapsInit = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void, params: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyKemEncapsulate = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        cipher: *mut u8,
        cipherLen: *mut u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplPkeyKemDecapsulate = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *const ::std::os::raw::c_void,
        data: *mut u8,
        dataLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplMdNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplMdInitCtx = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplMdUpdate = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, input: *const u8, len: u32) -> i32,
>;
pub type CRYPT_EAL_ImplMdFinal = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, out: *mut u8, outLen: *mut u32) -> i32,
>;
pub type CRYPT_EAL_ImplMdDeInitCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplMdDupCtx = ::std::option::Option<
    unsafe extern "C" fn(ctx: *const ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplMdCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplMdFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplMdSqueeze = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, out: *mut u8, len: u32) -> i32,
>;
pub type CRYPT_EAL_ImplMdCopyCtx = ::std::option::Option<
    unsafe extern "C" fn(
        dst: *mut ::std::os::raw::c_void,
        src: *const ::std::os::raw::c_void,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplMdGetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplMacNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplMacInit = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        key: *const u8,
        len: u32,
        param: *mut BSL_Param,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplMacUpdate = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, input: *const u8, len: u32) -> i32,
>;
pub type CRYPT_EAL_ImplMacFinal = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, out: *mut u8, outLen: *mut u32) -> i32,
>;
pub type CRYPT_EAL_ImplMacDeInitCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplMacReInitCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplMacCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplMacFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplMacSetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplKdfNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplKdfSetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplKdfDerive = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, key: *mut u8, keyLen: u32) -> i32,
>;
pub type CRYPT_EAL_ImplKdfDeInitCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplKdfCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplKdfFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplRandDrbgNewCtx = ::std::option::Option<
    unsafe extern "C" fn(
        provCtx: *mut ::std::os::raw::c_void,
        algId: i32,
        param: *mut BSL_Param,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplRandDrbgInst = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        pers: *const u8,
        persLen: u32,
        param: *mut BSL_Param,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplRandDrbgUnInst =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> i32>;
pub type CRYPT_EAL_ImplRandDrbgGen = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        out: *mut u8,
        outLen: u32,
        addin: *const u8,
        adinLen: u32,
        param: *mut BSL_Param,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplRandDrbgReSeed = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        addin: *const u8,
        addinLen: u32,
        param: *mut BSL_Param,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplRandDrbgCtrl = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        cmd: i32,
        val: *mut ::std::os::raw::c_void,
        valLen: u32,
    ) -> i32,
>;
pub type CRYPT_EAL_ImplRandDrbgFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_DECODER_IMPL_NewCtx = ::std::option::Option<
    unsafe extern "C" fn(provCtx: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_DECODER_IMPL_SetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_DECODER_IMPL_GetParam = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *mut BSL_Param) -> i32,
>;
pub type CRYPT_DECODER_IMPL_Decode = ::std::option::Option<
    unsafe extern "C" fn(
        ctx: *mut ::std::os::raw::c_void,
        inParam: *const BSL_Param,
        outParam: *mut *mut BSL_Param,
    ) -> i32,
>;
pub type CRYPT_DECODER_IMPL_FreeOutData = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, outData: *mut BSL_Param),
>;
pub type CRYPT_DECODER_IMPL_FreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
pub type CRYPT_EAL_ImplSelftestNewCtx = ::std::option::Option<
    unsafe extern "C" fn(provCtx: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
>;
pub type CRYPT_EAL_ImplSelftestGetVersion = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void) -> *const ::std::os::raw::c_char,
>;
pub type CRYPT_EAL_ImplSelftestSelftest = ::std::option::Option<
    unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, param: *const BSL_Param) -> i32,
>;
pub type CRYPT_EAL_ImplSelftestFreeCtx =
    ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __locale_data {
    pub _address: u8,
}
